perm filename COURSE[1,JRA] blob
sn#544183 filedate 1980-11-05 generic text, type C, neo UTF8
COMMENT ā VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 The Art of Computer Science
C00007 00003 notational harrangue
C00008 ENDMK
Cā;
The Art of Computer Science
This course is a challenge. I plan to challenge your conception of what
computing is about, to challenge the traditional view of the purpose
programming languages, to challenge the usual conception of how one does
programming, to challenge the traditional curriculum of computing, and in
general to challenge your minds.
The course is neither mathematics nor engineering; it draws from both
disciplines, as does all of computer science. The intent of the course is
to investigate the phenomena called computing at a level of abstraction
that will allows us to explicate fundamental principles that underlie
computing theory and practice.
The texts for this course are (1) these notes, (2) "Zen and the Art of
Motorcycle maintenance", and (3) "Godel, Escher, Bach", and (4) the
programming lab notes.
These class notes form the main structure of the technical and
"meta-computational" perspective that supports the inquiry. "Zen" has
valuable insights in the relationships between art and science, besides
the appropriate "tone" for this course. "Godel, Escher, Bach" is good fun;
an exemplary book showing how one can present complex ideas in an
intuitive, yet faithful, setting. Much of "GEB" will show up in this
course.
A lab session is associated with this course. Since part of our
exploration involves computing, it is a requirement that one understands
the art of computing --oftern called "programming". Learning to program is
like learning to drive --both can profit from classroom work that explains
basic concepts. However both require "hands-on" experience before one
really gets "the feel" of the instrument. As with driving school, we
should supply the students with the best available vehicles and guide them
in the process of applying the theory.
There are two important practical lessons in the programming experience:
first to develop an appreciation for abstraction and abstract programming,
and second to develop an understanding of how interactive programming
differs from the traditional "batch" (or modified "batch")-procesing view.
Abstract object-oriented programming carried out in an interactive
programming environment is the future of applied computing.
The course will be a "mind-stretcher", investigating: computation, proof,
and truth; computing formalism and mathematical notation; recursion in
logic and computing; abstract algorithms and objects; symbolic computation
and Godel numbering; evaluation and LISP machines; algorithms as data;
data as algorithms; compilation and LISP machines; pattern-directed
computation and logic; interactive computing versus "discipline";
implementation of LISP-like languages.
The course will be self-contained: no prerequsites other than a healthy
intellectual curiousity and the self-discipline to think.
notational harrangue